﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace FGK
{
    abstract class Kamera
    {
        Obrazek obraz;
        private Wektor position;
        private Wektor target;
        private Wektor up;
        private Stack<Obiekt> obiekty;
        private Stack<Swiatlo> swiatla;


        public Stack<Swiatlo> Swiatlo
        {
            get { return swiatla; }
            set { swiatla = value; }
        }

        public Wektor Position
        {
            get { return position; }
            set { position = value; }
        }

        public Wektor Target
        {
            get { return target; }
            set { target = value; }
        }

        public Wektor Up
        {
            get { return up; }
            set { up = value; }
        }

        public Obrazek Obraz
        {
            get { return obraz; }
            set { obraz = value; }
        }

        public Stack<Obiekt> Obiekty
        {
            get { return obiekty; }
            set { obiekty = value; }
        }

        public Kamera()
        {
            this.position = new Wektor(0.0f, 0.0f, 0.0f);
            this.target = new Wektor(0.0f, 0.0f, 1.0f);
            this.up = new Wektor(0.0f, 1.0f, 0.0f);
        }

        public Kamera(Wektor p, Wektor t, Stack<Obiekt> s, Obrazek o, Stack<Swiatlo> sw)
        {
            position = new Wektor(p);
            target = new Wektor(t);
            up = new Wektor(0.0f, 1.0f, 0.0f);
            obiekty = s;
            obraz = o;
            swiatla = sw;
        }

        public Kamera(Wektor p, Wektor t, Stack<Obiekt> s, Obrazek o)
        {
            position = new Wektor(p);
            target = new Wektor(t);
            up = new Wektor(0.0f, 1.0f, 0.0f);
            obiekty = s;
            obraz = o;
        }

        abstract public void render_scene();
    }
}
